package com.itheima.edu.info.manager.controller;

import com.itheima.edu.info.manager.domain.Student;
import com.itheima.edu.info.manager.service.StudentService;

import java.util.Scanner;

public class StudentController {
    StudentService studentService = new StudentService();
    Scanner sc = new Scanner(System.in);
    public void start(){

        studentLoop:
        student:while (true) {
            System.out.println("--------欢迎来到<学生>管理系统--------");
            System.out.println("请输入您的选择 : 1.添加学生 2.删除学生 3.修改学生 4.查询学生 5.退出");
            String choice = sc.next();

            switch (choice) {
                case "1" :
                    //System.out.println("添加学生");
                    addStudent();
                    break;
                case "2" :
                    //System.out.println("删除学生");
                    deleteStudentById();
                    break;
                case "3" :
                    //System.out.println("修改学生");
                    updateStudent();
                    break;
                case "4" :
                    //System.out.println("查询学生");
                    findAllStudent();
                    break;
                case "5" :
                    System.out.println("感谢使用学生管理系统,再见");
                    break studentLoop;
                    default:
                        System.out.println("您的输入有误,请重新输入");
                        break;
            }

        }
    }

    //修改学生方法
    public void updateStudent() {
       //接受要修改的学生学号
        System.out.println("请输入要修改的学生id:");
        String updateId;
        while (true){
            updateId = sc.next();

            //调用业务员的判断id是否存在方法,对用户录入的id进行校验
            boolean exists = studentService.isExists(updateId);

            if (exists){
                //存在就结束循环,
                break;
            }else {
                //不存在,就让用户重新录入
                System.out.println("当前id不存在,请重新输入");
                return;
            }
        }
        //接受新的学生信息--封装成新的学生对象
        System.out.println("请输入姓名:");
        String name = sc.next();
        System.out.println("请输入年龄:");
        String age = sc.next();
        System.out.println("请输入生日:");
        String birthday = sc.next();

        //封装成新的学生对象
        Student newStu = new Student();
        newStu.setId(updateId);
        newStu.setName(name);
        newStu.setAge(age);
        newStu.setBrithday(birthday);

        //指挥业务员完成修改业务,将要修改的学号和封装好的学生对象作为参数
        studentService.updateStudent(updateId,newStu);
        //给出修改提示
        System.out.println("修改成功!");

    }

    //删除学生方法
    public void deleteStudentById() {
        //接受用户录入的要删除的学生id
        System.out.println("请输入要删除的学生id:");
        String delId;
        while (true){
            delId = sc.next();

            //调用业务员的判断id是否存在方法,对用户录入的id进行校验
            boolean exists = studentService.isExists(delId);

            if (exists){
                //存在就结束循环
                break;
            }else {
                System.out.println("当前id不存在,请重新输入");
            }
        }
        //除了循环,接收到一个存在的id
        studentService.deleteStudentById(delId);
        //删除提示
        System.out.println("删除成功");
    }

    //查看学生方法
   public  void findAllStudent() {
        //调用业务员中的获取方法,得到学生的对象数组
       Student[] stus = studentService.findAllStudent();
       //判断数组的内存地址,是否为null
       if (stus == null){
           System.out.println("查无信息,请添加后重试");
           return;
       }
       //遍历数组,获取学生信息并打印在控制台
       System.out.println("学号\t\t姓名\t年龄\t\t生日");
       for (int i = 0; i < stus.length; i++) {
           Student stu = stus[i];
           if (stu != null){
               System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t\t" + stu.getBrithday());
           }
       }
    }

    //添加学生方法
    public  void addStudent(){
        //接受用户输入的信息
        Scanner sc = new Scanner(System.in);
        String id;
        while (true){
        System.out.println("请输入学生学号:");
        id = sc.next();
        //加入学号是否存在的判断
        //指挥业务员去帮我们检验一下当前用户录入的学号是否存在

        boolean exists = studentService.isExists(id);
        //根据业务员返回的结果进行判断
        if (exists){
            //true,说明学号存在,不能用,需要重新输入
            System.out.println("当前学号已存在,请重新输入:");
        }else {
            //false说明学号不存在,可以用,就让用户往下输入姓名等其他信息
            break;
             }
        }
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄:");
        String age = sc.next();
        System.out.println("请输入学生生日:");
        String birthday = sc.next();

        //将录入的信息封装成Student学生对象
        Student stu = new Student();
        stu.setId(id);
        stu.setName(name);
        stu.setAge(age);
        stu.setBrithday(birthday);

        //将封装好的学生对象交给业务员Service,让service去做添加业务
        StudentService service = new StudentService();
        boolean res = service.addStudemt(stu);

        //根据业务员反回的结果给用户相应的提示
        if (res){
            System.out.println("添加成功!");
        }else{
            System.out.println("添加失败!");
        }

    }

}
